﻿2026-06-04T07:59:22.8029880Z ##[group]Run ./traceable-reqs lint || true
2026-06-04T07:59:22.8030487Z [36;1m./traceable-reqs lint || true[0m
2026-06-04T07:59:22.8051779Z shell: /usr/bin/bash -e {0}
2026-06-04T07:59:22.8052182Z ##[endgroup]
2026-06-04T07:59:22.8255068Z Requirement quality findings (17); 129 requirements queued for agent review:
2026-06-04T07:59:22.8257252Z   [must] requirement_quality REQ-API-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-04T07:59:22.8259350Z   [must] requirement_quality REQ-HAZARD-CONFLICT-BOTH-PRESERVED criterion=length — title is 29 words; want 3..=25
2026-06-04T07:59:22.8261201Z   [must] requirement_quality REQ-HAZARD-DAEMON-SCHED-NONBLOCKING criterion=length — title is 32 words; want 3..=25
2026-06-04T07:59:22.8263482Z   [must] requirement_quality REQ-HAZARD-ENVELOPE-PARSER-SAFE criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-04T07:59:22.8282764Z   [must] requirement_quality REQ-HAZARD-GEN-START-NOW criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-04T07:59:22.8287030Z   [must] requirement_quality REQ-HAZARD-PAIR-RATE-LIMIT criterion=length — title is 37 words; want 3..=25
2026-06-04T07:59:22.8290720Z   [must] requirement_quality REQ-HAZARD-PAIR-SEED-ROTATION criterion=length — title is 33 words; want 3..=25
2026-06-04T07:59:22.8295600Z   [must] requirement_quality REQ-HAZARD-PAIR-TRANSCRIPT-BIND criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-04T07:59:22.8301180Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-04T07:59:22.8305517Z   [must] requirement_quality REQ-HAZARD-PSYCHE-OUTBOUND-PROXY criterion=length — title is 27 words; want 3..=25
2026-06-04T07:59:22.8309072Z   [must] requirement_quality REQ-HAZARD-WAN-ORIGIN-AUTH criterion=length — title is 37 words; want 3..=25
2026-06-04T07:59:22.8312263Z   [must] requirement_quality REQ-INST-15 criterion=length — title is 32 words; want 3..=25
2026-06-04T07:59:22.8315158Z   [must] requirement_quality REQ-INSTALL-2 criterion=length — title is 2 word(s); want 3..=25
2026-06-04T07:59:22.8318649Z   [must] requirement_quality REQ-MANIFEST-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-04T07:59:22.8322714Z   [must] requirement_quality REQ-MIGRATE-1 criterion=contains-and — title contains ' and ' — may smuggle multiple capabilities
2026-06-04T07:59:22.8326203Z   [must] requirement_quality REQ-SEAM-SPAWN criterion=length — title is 2 word(s); want 3..=25
2026-06-04T07:59:22.8329063Z   [must] requirement_quality REQ-STORE-1 criterion=length — title is 34 words; want 3..=25
2026-06-04T07:59:22.8330836Z 
2026-06-04T07:59:22.8331295Z # Requirement quality review
2026-06-04T07:59:22.8332018Z 
2026-06-04T07:59:22.8332998Z You are reviewing 129 requirement(s) from `traceable-reqs.toml` against a quality
2026-06-04T07:59:22.8335380Z rubric. Deterministic checks (length, contains-and, tbd-todo, duplicate-titles,
2026-06-04T07:59:22.8337779Z trailing-etc) have already run and surfaced as `requirement_quality` findings on
2026-06-04T07:59:22.8340222Z this command's output. Your task is the rubric items below.
2026-06-04T07:59:22.8341306Z 
2026-06-04T07:59:22.8341822Z ## Rubric
2026-06-04T07:59:22.8342307Z 
2026-06-04T07:59:22.8343517Z - **singular** — describes one capability; no smuggled "and"/"or" across distinct actions.
2026-06-04T07:59:22.8346120Z - **verifiable** — states an observable behavior a test or reviewer could confirm.
2026-06-04T07:59:22.8348428Z - **atomic** — cannot be split into two requirements without losing meaning.
2026-06-04T07:59:22.8350695Z - **active-voice** — clear subject and active verb.
2026-06-04T07:59:22.8351680Z 
2026-06-04T07:59:22.8352718Z If a criterion is borderline or doesn't apply, abstain — only emit findings for
2026-06-04T07:59:22.8354487Z clear concerns.
2026-06-04T07:59:22.8355041Z 
2026-06-04T07:59:22.8355448Z ## Requirements
2026-06-04T07:59:22.8356448Z 
2026-06-04T07:59:22.8356851Z ### REQ-ARCH-1
2026-06-04T07:59:22.8357930Z - Title: Many small acyclically-layered crates
2026-06-04T07:59:22.8359342Z - Required stages: impl
2026-06-04T07:59:22.8360005Z 
2026-06-04T07:59:22.8360408Z ### REQ-ARCH-2
2026-06-04T07:59:22.8361670Z - Title: Public SDK surface is spt-proto, spt-runtime, spt-msg
2026-06-04T07:59:22.8363205Z - Required stages: impl
2026-06-04T07:59:22.8363868Z 
2026-06-04T07:59:22.8364271Z ### REQ-ARCH-3
2026-06-04T07:59:22.8365729Z - Title: Wire-protocol version independent of crate semver, N-1 compat window
2026-06-04T07:59:22.8367553Z - Required stages: impl, unit
2026-06-04T07:59:22.8368298Z 
2026-06-04T07:59:22.8368689Z ### REQ-ARCH-4
2026-06-04T07:59:22.8370060Z - Title: Copy-verbatim the commodity layer from the sister project
2026-06-04T07:59:22.8371702Z - Required stages: impl, unit
2026-06-04T07:59:22.8372423Z 
2026-06-04T07:59:22.8372836Z ### REQ-DAEMON-1
2026-06-04T07:59:22.8374130Z - Title: One per-machine spt-daemon owning all per-machine state
2026-06-04T07:59:22.8375754Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8376549Z 
2026-06-04T07:59:22.8376946Z ### REQ-DAEMON-2
2026-06-04T07:59:22.8378089Z - Title: Broker/brain split for seamless self-update
2026-06-04T07:59:22.8379586Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8380385Z 
2026-06-04T07:59:22.8380792Z ### REQ-DAEMON-3
2026-06-04T07:59:22.8382224Z - Title: Any api invocation auto-starts the daemon if absent
2026-06-04T07:59:22.8383770Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8384562Z 
2026-06-04T07:59:22.8384961Z ### REQ-DAEMON-4
2026-06-04T07:59:22.8386027Z - Title: Honor every KNOWN-HAZARDS invariant
2026-06-04T07:59:22.8387372Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8388161Z 
2026-06-04T07:59:22.8388554Z ### REQ-STORE-1
2026-06-04T07:59:22.8393706Z - Title: spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)
2026-06-04T07:59:22.8399257Z - Required stages: impl, unit
2026-06-04T07:59:22.8400008Z 
2026-06-04T07:59:22.8400421Z ### REQ-MANIFEST-1
2026-06-04T07:59:22.8401841Z - Title: Per-adapter manifest with adapter_name and min_spt_core_version
2026-06-04T07:59:22.8403607Z - Required stages: doc, impl, unit
2026-06-04T07:59:22.8404454Z 
2026-06-04T07:59:22.8404910Z ### REQ-SEAM-SPAWN
2026-06-04T07:59:22.8405942Z - Title: spawn-session seam
2026-06-04T07:59:22.8407081Z - Required stages: impl, unit
2026-06-04T07:59:22.8407808Z 
2026-06-04T07:59:22.8408244Z ### REQ-SEAM-POSTSPAWN
2026-06-04T07:59:22.8409481Z - Title: post-spawn / api bind seam with boot nonce
2026-06-04T07:59:22.8410920Z - Required stages: impl, unit
2026-06-04T07:59:22.8411654Z 
2026-06-04T07:59:22.8412067Z ### REQ-SEAM-PSYCHE
2026-06-04T07:59:22.8413259Z - Title: spawn-psyche seam (fresh + resume templates)
2026-06-04T07:59:22.8414750Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8415535Z 
2026-06-04T07:59:22.8415954Z ### REQ-SEAM-HISTORY
2026-06-04T07:59:22.8417372Z - Title: History subsystem (fetcher / locate-normalize / native store)
2026-06-04T07:59:22.8419085Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8419926Z 
2026-06-04T07:59:22.8420340Z ### REQ-SEAM-ACTIVITY
2026-06-04T07:59:22.8421769Z - Title: Activity/idle reported via api sentinels, not PTY quiescence
2026-06-04T07:59:22.8423453Z - Required stages: impl, unit
2026-06-04T07:59:22.8424194Z 
2026-06-04T07:59:22.8424618Z ### REQ-SEAM-INJECT
2026-06-04T07:59:22.8425927Z - Title: inject-input methods configurable per activity-state
2026-06-04T07:59:22.8427496Z - Required stages: impl, unit
2026-06-04T07:59:22.8428218Z 
2026-06-04T07:59:22.8428647Z ### REQ-SEAM-RESUME
2026-06-04T07:59:22.8430095Z - Title: resume-session seam (fresh-with-preload / continue-existing)
2026-06-04T07:59:22.8431799Z - Required stages: impl, unit
2026-06-04T07:59:22.8432814Z 
2026-06-04T07:59:22.8433243Z ### REQ-SEAM-CAPABILITY
2026-06-04T07:59:22.8434549Z - Title: Hostable endpoint-types capability declaration
2026-06-04T07:59:22.8436025Z - Required stages: impl, unit
2026-06-04T07:59:22.8436752Z 
2026-06-04T07:59:22.8437174Z ### REQ-SEAM-UPDATE
2026-06-04T07:59:22.8438465Z - Title: Adapter-update avenue (file-pull / delegated command)
2026-06-04T07:59:22.8440099Z - Required stages: impl, unit
2026-06-04T07:59:22.8440835Z 
2026-06-04T07:59:22.8441228Z ### REQ-API-1
2026-06-04T07:59:22.8442518Z - Title: api prefix and adapter_name on every machinery invocation
2026-06-04T07:59:22.8444168Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8444947Z 
2026-06-04T07:59:22.8445341Z ### REQ-API-2
2026-06-04T07:59:22.8446801Z - Title: The api subcommand surface (bind/listen/poll/state/worker/boundary/...)
2026-06-04T07:59:22.8448647Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8449485Z 
2026-06-04T07:59:22.8449888Z ### REQ-API-3
2026-06-04T07:59:22.8451012Z - Title: commune/signoff are file-drops, not commands
2026-06-04T07:59:22.8452467Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8453258Z 
2026-06-04T07:59:22.8453660Z ### REQ-START-1
2026-06-04T07:59:22.8455095Z - Title: Adapters never resolve SPT_HOME; binary on PATH; api bridging only
2026-06-04T07:59:22.8456860Z - Required stages: impl, unit
2026-06-04T07:59:22.8457580Z 
2026-06-04T07:59:22.8458161Z ### REQ-START-2
2026-06-04T07:59:22.8459363Z - Title: Harness-hosted startup: api seed then listen
2026-06-04T07:59:22.8460835Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8461625Z 
2026-06-04T07:59:22.8462020Z ### REQ-START-3
2026-06-04T07:59:22.8463343Z - Title: spt-hosted startup: spawn-session then api bind (no file)
2026-06-04T07:59:22.8465002Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8465787Z 
2026-06-04T07:59:22.8466191Z ### REQ-START-4
2026-06-04T07:59:22.8467328Z - Title: Adapter-injected env aliases (SPT/OWL/LIVE)
2026-06-04T07:59:22.8468776Z - Required stages: impl, unit
2026-06-04T07:59:22.8469558Z 
2026-06-04T07:59:22.8469955Z ### REQ-EP-1
2026-06-04T07:59:22.8471034Z - Title: Day-one endpoint types; open type system
2026-06-04T07:59:22.8472452Z - Required stages: impl, unit
2026-06-04T07:59:22.8473177Z 
2026-06-04T07:59:22.8473574Z ### REQ-EP-2
2026-06-04T07:59:22.8474822Z - Title: Agent endpoints vs Shells distinction in the type model
2026-06-04T07:59:22.8476443Z - Required stages: impl, unit
2026-06-04T07:59:22.8477187Z 
2026-06-04T07:59:22.8477569Z ### REQ-EP-3
2026-06-04T07:59:22.8478923Z - Title: Messaging payloads carry typed operation commands + file blobs
2026-06-04T07:59:22.8480697Z - Required stages: impl, unit
2026-06-04T07:59:22.8481436Z 
2026-06-04T07:59:22.8481835Z ### REQ-EP-4
2026-06-04T07:59:22.8482983Z - Title: PresenceChannel broker endpoint (seam day-one)
2026-06-04T07:59:22.8484464Z - Required stages: impl, unit
2026-06-04T07:59:22.8485184Z 
2026-06-04T07:59:22.8485581Z ### REQ-EP-5
2026-06-04T07:59:22.8489683Z - Title: Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope
2026-06-04T07:59:22.8494071Z - Required stages: 
2026-06-04T07:59:22.8494667Z 
2026-06-04T07:59:22.8495069Z ### REQ-INST-1
2026-06-04T07:59:22.8496297Z - Title: endpoint ID vs instance split (adapter-agnostic ID)
2026-06-04T07:59:22.8497818Z - Required stages: 
2026-06-04T07:59:22.8498398Z 
2026-06-04T07:59:22.8498805Z ### REQ-INST-2
2026-06-04T07:59:22.8499889Z - Title: Per-node files, synced Psyche mind
2026-06-04T07:59:22.8501211Z - Required stages: impl, unit
2026-06-04T07:59:22.8501950Z 
2026-06-04T07:59:22.8502335Z ### REQ-INST-3
2026-06-04T07:59:22.8510822Z - Title: Dormant (warm) / suspended (cold) resting states
2026-06-04T07:59:22.8512555Z - Required stages: 
2026-06-04T07:59:22.8513144Z 
2026-06-04T07:59:22.8513550Z ### REQ-INST-4
2026-06-04T07:59:22.8515188Z - Title: active to dormant/suspended fires a transition echo commune
2026-06-04T07:59:22.8516817Z - Required stages: 
2026-06-04T07:59:22.8517409Z 
2026-06-04T07:59:22.8517801Z ### REQ-INST-5
2026-06-04T07:59:22.8519116Z - Title: Two-tier context sync (live to all, project to same-project)
2026-06-04T07:59:22.8520837Z - Required stages: impl, unit
2026-06-04T07:59:22.8521582Z 
2026-06-04T07:59:22.8521985Z ### REQ-INST-6
2026-06-04T07:59:22.8523376Z - Title: Deferred messages not delivered to dormant/suspended instances
2026-06-04T07:59:22.8525059Z - Required stages: 
2026-06-04T07:59:22.8525643Z 
2026-06-04T07:59:22.8526048Z ### REQ-INST-7
2026-06-04T07:59:22.8527175Z - Title: Subnet registry + bare-id resolution policy
2026-06-04T07:59:22.8528607Z - Required stages: impl, unit
2026-06-04T07:59:22.8529380Z 
2026-06-04T07:59:22.8529773Z ### REQ-INST-8
2026-06-04T07:59:22.8530973Z - Title: Remote-control mode distinct from local operation
2026-06-04T07:59:22.8532494Z - Required stages: impl, unit
2026-06-04T07:59:22.8533240Z 
2026-06-04T07:59:22.8533641Z ### REQ-INST-9
2026-06-04T07:59:22.8535013Z - Title: Multi-subnet membership (same-user N subnets; cross-user seam)
2026-06-04T07:59:22.8536739Z - Required stages: impl, unit
2026-06-04T07:59:22.8537474Z 
2026-06-04T07:59:22.8537868Z ### REQ-INST-10
2026-06-04T07:59:22.8539419Z - Title: Qualified addressing [subnet:]id[@node] + ambiguity forces qualification
2026-06-04T07:59:22.8541445Z - Required stages: impl, unit
2026-06-04T07:59:22.8542183Z 
2026-06-04T07:59:22.8542578Z ### REQ-INST-11
2026-06-04T07:59:22.8544096Z - Title: spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)
2026-06-04T07:59:22.8545973Z - Required stages: impl, unit
2026-06-04T07:59:22.8546706Z 
2026-06-04T07:59:22.8547093Z ### REQ-INST-12
2026-06-04T07:59:22.8549045Z - Title: Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync
2026-06-04T07:59:22.8551385Z - Required stages: impl, unit
2026-06-04T07:59:22.8552139Z 
2026-06-04T07:59:22.8552537Z ### REQ-INST-13
2026-06-04T07:59:22.8553887Z - Title: Subnet-exclusive sync + per-endpoint subnet-membership list
2026-06-04T07:59:22.8555565Z - Required stages: impl, unit
2026-06-04T07:59:22.8556282Z 
2026-06-04T07:59:22.8556680Z ### REQ-INST-14
2026-06-04T07:59:22.8559085Z - Title: Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated
2026-06-04T07:59:22.8561894Z - Required stages: 
2026-06-04T07:59:22.8562495Z 
2026-06-04T07:59:22.8562890Z ### REQ-INST-15
2026-06-04T07:59:22.8567203Z - Title: Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)
2026-06-04T07:59:22.8571902Z - Required stages: 
2026-06-04T07:59:22.8572485Z 
2026-06-04T07:59:22.8572895Z ### REQ-REACH-1
2026-06-04T07:59:22.8574090Z - Title: Off-node remote-drive detection + file transfer
2026-06-04T07:59:22.8575557Z - Required stages: impl, unit
2026-06-04T07:59:22.8576295Z 
2026-06-04T07:59:22.8576687Z ### REQ-REACH-2
2026-06-04T07:59:22.8577918Z - Title: Remote command execution (deferred, consent-gated)
2026-06-04T07:59:22.8579422Z - Required stages: 
2026-06-04T07:59:22.8580011Z 
2026-06-04T07:59:22.8580407Z ### REQ-MSG-1
2026-06-04T07:59:22.8583212Z - Title: Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)
2026-06-04T07:59:22.8586417Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8587215Z 
2026-06-04T07:59:22.8587602Z ### REQ-MSG-2
2026-06-04T07:59:22.8589420Z - Title: spt binary CLI surface: send/ring/ready/poll/list/stop/whoami, stable arg shapes + exit codes
2026-06-04T07:59:22.8591611Z - Required stages: impl, unit
2026-06-04T07:59:22.8592331Z 
2026-06-04T07:59:22.8592724Z ### REQ-MSG-3
2026-06-04T07:59:22.8595391Z - Title: Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown
2026-06-04T07:59:22.8598226Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8599017Z 
2026-06-04T07:59:22.8599468Z ### REQ-NODE-IDENTITY
2026-06-04T07:59:22.8601112Z - Title: Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex
2026-06-04T07:59:22.8603092Z - Required stages: impl, unit
2026-06-04T07:59:22.8603817Z 
2026-06-04T07:59:22.8604209Z ### REQ-NET-1
2026-06-04T07:59:22.8605543Z - Title: WAN messaging first-class, behind default-on net feature flag
2026-06-04T07:59:22.8607239Z - Required stages: impl, unit
2026-06-04T07:59:22.8607971Z 
2026-06-04T07:59:22.8608349Z ### REQ-NET-2
2026-06-04T07:59:22.8609699Z - Title: n0 relay default + self-host knob + plain-language disclosure
2026-06-04T07:59:22.8611345Z - Required stages: impl
2026-06-04T07:59:22.8611997Z 
2026-06-04T07:59:22.8612395Z ### REQ-NET-3
2026-06-04T07:59:22.8613651Z - Title: Cross-node Psyche sync over P2P replaces gh-repo-sync
2026-06-04T07:59:22.8615226Z - Required stages: impl, unit
2026-06-04T07:59:22.8615946Z 
2026-06-04T07:59:22.8616351Z ### REQ-PAIR-1
2026-06-04T07:59:22.8617352Z - Title: TOTP-seeded SPAKE2 pairing
2026-06-04T07:59:22.8618566Z - Required stages: impl, unit
2026-06-04T07:59:22.8619330Z 
2026-06-04T07:59:22.8619725Z ### REQ-PAIR-2
2026-06-04T07:59:22.8621012Z - Title: Local trust store with TOFU + warn-on-change
2026-06-04T07:59:22.8622454Z - Required stages: impl, unit
2026-06-04T07:59:22.8623180Z 
2026-06-04T07:59:22.8623586Z ### REQ-PAIR-3
2026-06-04T07:59:22.8624757Z - Title: Fetch current pairing code from any paired node
2026-06-04T07:59:22.8626233Z - Required stages: impl, unit
2026-06-04T07:59:22.8626971Z 
2026-06-04T07:59:22.8627365Z ### REQ-PAIR-4
2026-06-04T07:59:22.8628365Z - Title: Subnet naming on first pairing
2026-06-04T07:59:22.8629670Z - Required stages: impl, unit
2026-06-04T07:59:22.8630412Z 
2026-06-04T07:59:22.8630831Z ### REQ-PAIR-5
2026-06-04T07:59:22.8632843Z - Title: Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing
2026-06-04T07:59:22.8635204Z - Required stages: impl, unit
2026-06-04T07:59:22.8635935Z 
2026-06-04T07:59:22.8636330Z ### REQ-PAIR-6
2026-06-04T07:59:22.8642992Z - Title: Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)
2026-06-04T07:59:22.8645318Z - Required stages: impl, unit
2026-06-04T07:59:22.8646058Z 
2026-06-04T07:59:22.8646463Z ### REQ-PAIR-7
2026-06-04T07:59:22.8647700Z - Title: Subnet icon (inline image metadata, GUI-only consumer)
2026-06-04T07:59:22.8649308Z - Required stages: 
2026-06-04T07:59:22.8649903Z 
2026-06-04T07:59:22.8650306Z ### REQ-SEC-1
2026-06-04T07:59:22.8653309Z - Title: Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants
2026-06-04T07:59:22.8656471Z - Required stages: impl, unit
2026-06-04T07:59:22.8657245Z 
2026-06-04T07:59:22.8657635Z ### REQ-NOTIF-1
2026-06-04T07:59:22.8660860Z - Title: Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts
2026-06-04T07:59:22.8663793Z - Required stages: 
2026-06-04T07:59:22.8664773Z 
2026-06-04T07:59:22.8665237Z ### REQ-NOTIF-2
2026-06-04T07:59:22.8667162Z - Title: spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)
2026-06-04T07:59:22.8669690Z - Required stages: 
2026-06-04T07:59:22.8670306Z 
2026-06-04T07:59:22.8670690Z ### REQ-UPD-1
2026-06-04T07:59:22.8671703Z - Title: Peer-propagated update over P2P
2026-06-04T07:59:22.8673021Z - Required stages: impl, unit
2026-06-04T07:59:22.8673748Z 
2026-06-04T07:59:22.8674150Z ### REQ-UPD-2
2026-06-04T07:59:22.8675450Z - Title: All binaries signature-verified before handoff
2026-06-04T07:59:22.8676963Z - Required stages: impl, unit
2026-06-04T07:59:22.8677722Z 
2026-06-04T07:59:22.8678120Z ### REQ-UPD-3
2026-06-04T07:59:22.8680120Z - Title: No endpoint process terminates/suspends during self-update
2026-06-04T07:59:22.8681773Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8682566Z 
2026-06-04T07:59:22.8682961Z ### REQ-UPD-4
2026-06-04T07:59:22.8684275Z - Title: Update gated on user confirmation by default; opt-in full-auto
2026-06-04T07:59:22.8685954Z - Required stages: impl, unit
2026-06-04T07:59:22.8686681Z 
2026-06-04T07:59:22.8687099Z ### REQ-UPD-5
2026-06-04T07:59:22.8688215Z - Title: spt-core ripple-updates registered adapters
2026-06-04T07:59:22.8689689Z - Required stages: impl, unit
2026-06-04T07:59:22.8690422Z 
2026-06-04T07:59:22.8690814Z ### REQ-TERM-1
2026-06-04T07:59:22.8692121Z - Title: Process-supervisor terminal wrapper hosting broker PTYs
2026-06-04T07:59:22.8693731Z - Required stages: impl, unit
2026-06-04T07:59:22.8694452Z 
2026-06-04T07:59:22.8694850Z ### REQ-TERM-2
2026-06-04T07:59:22.8696180Z - Title: session-surface abstraction; send-keys + send-line injection
2026-06-04T07:59:22.8697872Z - Required stages: impl, unit
2026-06-04T07:59:22.8698596Z 
2026-06-04T07:59:22.8698981Z ### REQ-TERM-3
2026-06-04T07:59:22.8700151Z - Title: Byte-stream remote terminal streaming for v1
2026-06-04T07:59:22.8701576Z - Required stages: impl, unit
2026-06-04T07:59:22.8702308Z 
2026-06-04T07:59:22.8702704Z ### REQ-TERM-4
2026-06-04T07:59:22.8704979Z - Title: Live activity buffer (PTY digest): adapter-supplied patterns over broker PTY, spt digest pull + delta-stream, opt-in Path-B log
2026-06-04T07:59:22.8707846Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8708635Z 
2026-06-04T07:59:22.8709025Z ### REQ-FRONT-1
2026-06-04T07:59:22.8710449Z - Title: Day-one launcher/manager frontend (list/launch/attach/init)
2026-06-04T07:59:22.8712049Z - Required stages: 
2026-06-04T07:59:22.8712645Z 
2026-06-04T07:59:22.8713056Z ### REQ-INSTALL-1
2026-06-04T07:59:22.8714470Z - Title: Two install paths; signed one-line script; OS-service registration
2026-06-04T07:59:22.8716179Z - Required stages: 
2026-06-04T07:59:22.8716776Z 
2026-06-04T07:59:22.8717189Z ### REQ-INSTALL-2
2026-06-04T07:59:22.8718345Z - Title: Marketplace-repackaging-friendly install
2026-06-04T07:59:22.8719784Z - Required stages: 
2026-06-04T07:59:22.8720377Z 
2026-06-04T07:59:22.8720833Z ### REQ-INSTALL-3
2026-06-04T07:59:22.8721984Z - Title: Idempotent + interactive-optional first run
2026-06-04T07:59:22.8723383Z - Required stages: 
2026-06-04T07:59:22.8723986Z 
2026-06-04T07:59:22.8724404Z ### REQ-INSTALL-4
2026-06-04T07:59:22.8728208Z - Title: Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over
2026-06-04T07:59:22.8733068Z - Required stages: 
2026-06-04T07:59:22.8733676Z 
2026-06-04T07:59:22.8734076Z ### REQ-MIGRATE-1
2026-06-04T07:59:22.8735384Z - Title: Auto-detect and migrate a legacy claude_skill_owl install
2026-06-04T07:59:22.8736964Z - Required stages: 
2026-06-04T07:59:22.8737559Z 
2026-06-04T07:59:22.8737958Z ### REQ-INFRA-1
2026-06-04T07:59:22.8739363Z - Title: GitHub issue tracking for v1; tangled.org as migration target
2026-06-04T07:59:22.8741016Z - Required stages: 
2026-06-04T07:59:22.8741609Z 
2026-06-04T07:59:22.8742002Z ### REQ-DOCS-1
2026-06-04T07:59:22.8743424Z - Title: Dual-audience docs (human + AI dev-agent), markdown once / two depths
2026-06-04T07:59:22.8745156Z - Required stages: 
2026-06-04T07:59:22.8745760Z 
2026-06-04T07:59:22.8746163Z ### REQ-DOCS-2
2026-06-04T07:59:22.8747400Z - Title: Sub-10-minute runnable killer quickstart per audience
2026-06-04T07:59:22.8748920Z - Required stages: 
2026-06-04T07:59:22.8749549Z 
2026-06-04T07:59:22.8749959Z ### REQ-DOCS-3
2026-06-04T07:59:22.8751458Z - Title: Diátaxis structure; one canonical way to do X
2026-06-04T07:59:22.8752934Z - Required stages: 
2026-06-04T07:59:22.8753614Z 
2026-06-04T07:59:22.8754117Z ### REQ-DOCS-4
2026-06-04T07:59:22.8755619Z - Title: Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)
2026-06-04T07:59:22.8757781Z - Required stages: 
2026-06-04T07:59:22.8758430Z 
2026-06-04T07:59:22.8758869Z ### REQ-DOCS-5
2026-06-04T07:59:22.8760766Z - Title: Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked
2026-06-04T07:59:22.8762604Z - Required stages: 
2026-06-04T07:59:22.8763265Z 
2026-06-04T07:59:22.8763791Z ### REQ-HAZARD-GRACE-BEFORE-SIGNOFF
2026-06-04T07:59:22.8765550Z - Title: Grace-period wait completes before composing INIT_SIGNOFF (1.1)
2026-06-04T07:59:22.8767425Z - Required stages: impl, unit
2026-06-04T07:59:22.8768221Z 
2026-06-04T07:59:22.8768741Z ### REQ-HAZARD-INFO-JSON-TORN-READ
2026-06-04T07:59:22.8777705Z - Title: State-file reads tolerate concurrent writes (1.2)
2026-06-04T07:59:22.8779764Z - Required stages: impl, unit
2026-06-04T07:59:22.8780699Z 
2026-06-04T07:59:22.8781177Z ### REQ-HAZARD-STALE-INDEX-LOCK
2026-06-04T07:59:22.8782515Z - Title: Sweep stale lockfiles on daemon boot (1.3)
2026-06-04T07:59:22.8783914Z - Required stages: 
2026-06-04T07:59:22.8784570Z 
2026-06-04T07:59:22.8785046Z ### REQ-HAZARD-DEFERRED-DRAIN
2026-06-04T07:59:22.8786630Z - Title: Deferred spool rows excluded from the event-stream drain (1.4)
2026-06-04T07:59:22.8788372Z - Required stages: impl, unit
2026-06-04T07:59:22.8789126Z 
2026-06-04T07:59:22.8789964Z ### REQ-HAZARD-WORKER-PATH
2026-06-04T07:59:22.8791499Z - Title: Single source of truth for Worker/Psyche perch location (1.5)
2026-06-04T07:59:22.8793774Z - Required stages: impl, unit
2026-06-04T07:59:22.8794700Z 
2026-06-04T07:59:22.8795255Z ### REQ-HAZARD-PARENT-PID-PREFER
2026-06-04T07:59:22.8797149Z - Title: Prefer stable parent PID / broker handle over ephemeral PID (2.1)
2026-06-04T07:59:22.8799056Z - Required stages: 
2026-06-04T07:59:22.8799897Z 
2026-06-04T07:59:22.8800389Z ### REQ-HAZARD-STDIN-SESSION-ID
2026-06-04T07:59:22.8801783Z - Title: Stdin session_id precedence over env (2.2)
2026-06-04T07:59:22.8803212Z - Required stages: 
2026-06-04T07:59:22.8803856Z 
2026-06-04T07:59:22.8804353Z ### REQ-HAZARD-HANDOFF-ARGV-COMPAT
2026-06-04T07:59:22.8805933Z - Title: Broker/brain IPC + handoff argv version-tolerant (2.3)
2026-06-04T07:59:22.8807544Z - Required stages: impl, unit
2026-06-04T07:59:22.8808274Z 
2026-06-04T07:59:22.8808739Z ### REQ-HAZARD-GEN-START-NOW
2026-06-04T07:59:22.8810204Z - Title: gen_start = now() on cold-start and handoff (2.4)
2026-06-04T07:59:22.8811698Z - Required stages: impl, int
2026-06-04T07:59:22.8812454Z 
2026-06-04T07:59:22.8812940Z ### REQ-HAZARD-EPHEMERAL-CLEANUP
2026-06-04T07:59:22.8814476Z - Title: Ephemeral perch cleanup on every ring exit path (3.1)
2026-06-04T07:59:22.8816084Z - Required stages: impl, unit
2026-06-04T07:59:22.8816861Z 
2026-06-04T07:59:22.8817390Z ### REQ-HAZARD-STALE-SIGNOFF-SENTINEL
2026-06-04T07:59:22.8819026Z - Title: Stale signoff sentinel does not kill a fresh start (3.2)
2026-06-04T07:59:22.8820750Z - Required stages: impl, unit
2026-06-04T07:59:22.8821498Z 
2026-06-04T07:59:22.8822006Z ### REQ-HAZARD-ECHO-BEFORE-SIGNOFF
2026-06-04T07:59:22.8823706Z - Title: Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)
2026-06-04T07:59:22.8825462Z - Required stages: impl, unit
2026-06-04T07:59:22.8826213Z 
2026-06-04T07:59:22.8826722Z ### REQ-HAZARD-ENVELOPE-DECODE-ORDER
2026-06-04T07:59:22.8828280Z - Title: Envelope decode order, ampersand decoded last (4.1)
2026-06-04T07:59:22.8829887Z - Required stages: impl, unit
2026-06-04T07:59:22.8830629Z 
2026-06-04T07:59:22.8831174Z ### REQ-HAZARD-ENVELOPE-PARSER-SAFE
2026-06-04T07:59:22.8832785Z - Title: Two-slice envelope parser is panic-free and tolerant (4.2)
2026-06-04T07:59:22.8834449Z - Required stages: impl, unit
2026-06-04T07:59:22.8835193Z 
2026-06-04T07:59:22.8835689Z ### REQ-HAZARD-EVENTPART-REASSEMBLY
2026-06-04T07:59:22.8837517Z - Title: EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently
2026-06-04T07:59:22.8839658Z - Required stages: impl, unit
2026-06-04T07:59:22.8840581Z 
2026-06-04T07:59:22.8841036Z ### REQ-HAZARD-ID-CHARSET
2026-06-04T07:59:22.8842883Z - Title: Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)
2026-06-04T07:59:22.8845480Z - Required stages: impl, unit
2026-06-04T07:59:22.8846237Z 
2026-06-04T07:59:22.8846730Z ### REQ-HAZARD-REGISTRY-STALE-CLEAN
2026-06-04T07:59:22.8848409Z - Title: Stale registry entries degrade to fallback, never hard-fail (4.3)
2026-06-04T07:59:22.8852526Z - Required stages: impl, unit
2026-06-04T07:59:22.8853319Z 
2026-06-04T07:59:22.8853851Z ### REQ-HAZARD-REGISTRY-CONCURRENT
2026-06-04T07:59:22.8855862Z - Title: Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)
2026-06-04T07:59:22.8857992Z - Required stages: impl, unit
2026-06-04T07:59:22.8858751Z 
2026-06-04T07:59:22.8859304Z ### REQ-HAZARD-REGISTRY-DIR-CREATE
2026-06-04T07:59:22.8862374Z - Title: SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)
2026-06-04T07:59:22.8864850Z - Required stages: doc, impl, unit
2026-06-04T07:59:22.8865660Z 
2026-06-04T07:59:22.8866206Z ### REQ-HAZARD-REGISTRY-EPOCH-LEASE
2026-06-04T07:59:22.8869063Z - Title: Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)
2026-06-04T07:59:22.8872107Z - Required stages: impl, unit
2026-06-04T07:59:22.8872898Z 
2026-06-04T07:59:22.8873440Z ### REQ-HAZARD-DEFERRED-SURVIVE-DRAIN
2026-06-04T07:59:22.8874929Z - Title: Deferred rows survive poll drain (4.4)
2026-06-04T07:59:22.8877011Z - Required stages: impl, unit
2026-06-04T07:59:22.8877821Z 
2026-06-04T07:59:22.8878321Z ### REQ-HAZARD-INBOX-NO-DOUBLE
2026-06-04T07:59:22.8879926Z - Title: No double-delivery via legacy inbox (4.5)
2026-06-04T07:59:22.8881371Z - Required stages: impl, unit
2026-06-04T07:59:22.8882126Z 
2026-06-04T07:59:22.8882638Z ### REQ-HAZARD-WINDOWS-PID-RECYCLE
2026-06-04T07:59:22.8884199Z - Title: Windows PID-recycling false positives guarded (5.1)
2026-06-04T07:59:22.8885829Z - Required stages: impl, unit
2026-06-04T07:59:22.8886664Z 
2026-06-04T07:59:22.8887149Z ### REQ-HAZARD-EBUSY-RENAME
2026-06-04T07:59:22.8888660Z - Title: tmp-write + atomic-rename + retry on Windows EBUSY (5.2)
2026-06-04T07:59:22.8890731Z - Required stages: impl, unit
2026-06-04T07:59:22.8891515Z 
2026-06-04T07:59:22.8892039Z ### REQ-HAZARD-SUBPROCESS-TIMEOUT
2026-06-04T07:59:22.8893581Z - Title: Every harness/git subprocess has a timeout (5.3)
2026-06-04T07:59:22.8895112Z - Required stages: impl, unit
2026-06-04T07:59:22.8895899Z 
2026-06-04T07:59:22.8896372Z ### REQ-HAZARD-UNC-PATH-STRIP
2026-06-04T07:59:22.8897906Z - Title: Strip Windows UNC prefix on serialized paths (5.4)
2026-06-04T07:59:22.8899578Z - Required stages: impl, unit
2026-06-04T07:59:22.8900392Z 
2026-06-04T07:59:22.8900899Z ### REQ-HAZARD-SINGLE-PATH-SOURCE
2026-06-04T07:59:22.8902300Z - Title: Single path/registry source of truth; no layout ambiguity (6.1)
2026-06-04T07:59:22.8903865Z - Required stages: impl, unit
2026-06-04T07:59:22.8904521Z 
2026-06-04T07:59:22.8904962Z ### REQ-HAZARD-SOFT-CLEANUP
2026-06-04T07:59:22.8906305Z - Title: Soft-cleanup preserves state, removes only the ready marker (6.2)
2026-06-04T07:59:22.8907781Z - Required stages: impl, unit
2026-06-04T07:59:22.8908429Z 
2026-06-04T07:59:22.8908938Z ### REQ-HAZARD-CASCADE-WIPE-GUARD
2026-06-04T07:59:22.8917835Z - Title: No hard-delete of a parent hosting non-empty children (6.3)
2026-06-04T07:59:22.8919597Z - Required stages: impl, unit
2026-06-04T07:59:22.8920387Z 
2026-06-04T07:59:22.8920875Z ### REQ-HAZARD-DROP-FILE-SINGLE-WRITER
2026-06-04T07:59:22.8922074Z - Title: Drop files are daemon-owned single-writer (6.4)
2026-06-04T07:59:22.8923273Z - Required stages: impl, unit
2026-06-04T07:59:22.8923887Z 
2026-06-04T07:59:22.8924356Z ### REQ-HAZARD-DIRECT-WRITE-PRECEDENCE
2026-06-04T07:59:22.8925739Z - Title: Direct-write precedence marker (with node id) guards stale overwrite (6.5)
2026-06-04T07:59:22.8927101Z - Required stages: impl, unit
2026-06-04T07:59:22.8927689Z 
2026-06-04T07:59:22.8928166Z ### REQ-HAZARD-CONFLICT-BOTH-PRESERVED
2026-06-04T07:59:22.8931327Z - Title: A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)
2026-06-04T07:59:22.8933775Z - Required stages: impl, unit
2026-06-04T07:59:22.8934407Z 
2026-06-04T07:59:22.8934843Z ### REQ-HAZARD-CONPTY-DSR
2026-06-04T07:59:22.8936181Z - Title: ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)
2026-06-04T07:59:22.8937636Z - Required stages: impl, unit
2026-06-04T07:59:22.8938242Z 
2026-06-04T07:59:22.8938745Z ### REQ-HAZARD-LOCAL-API-AUTH
2026-06-04T07:59:22.8940293Z - Title: Every local `api` mutation authenticated to an endpoint/session (codex #13)
2026-06-04T07:59:22.8941887Z - Required stages: impl, unit
2026-06-04T07:59:22.8942484Z 
2026-06-04T07:59:22.8942921Z ### REQ-HAZARD-RESTART-IDEMPOTENT
2026-06-04T07:59:22.8944337Z - Title: Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)
2026-06-04T07:59:22.8946016Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8946611Z 
2026-06-04T07:59:22.8947010Z ### REQ-HAZARD-UPDATE-ROLLBACK
2026-06-04T07:59:22.8948376Z - Title: Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)
2026-06-04T07:59:22.8949873Z - Required stages: impl, unit
2026-06-04T07:59:22.8950400Z 
2026-06-04T07:59:22.8950782Z ### REQ-HAZARD-DAEMON-HOSTED-LIVENESS
2026-06-04T07:59:22.8953127Z - Title: Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)
2026-06-04T07:59:22.8955057Z - Required stages: impl, unit, int
2026-06-04T07:59:22.8955598Z 
2026-06-04T07:59:22.8955981Z ### REQ-HAZARD-PSYCHE-OUTBOUND-PROXY
2026-06-04T07:59:22.8958959Z - Title: Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)
2026-06-04T07:59:22.8961470Z - Required stages: 
2026-06-04T07:59:22.8961875Z 
2026-06-04T07:59:22.8962208Z ### REQ-HAZARD-DAEMON-SCHED-NONBLOCKING
2026-06-04T07:59:22.8964264Z - Title: Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)
2026-06-04T07:59:22.8966354Z - Required stages: 
2026-06-04T07:59:22.8966741Z 
2026-06-04T07:59:22.8967072Z ### REQ-HAZARD-PAIR-TRANSCRIPT-BIND
2026-06-04T07:59:22.8969224Z - Title: Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)
2026-06-04T07:59:22.8971445Z - Required stages: impl, unit
2026-06-04T07:59:22.8971895Z 
2026-06-04T07:59:22.8972231Z ### REQ-HAZARD-PAIR-SEED-ROTATION
2026-06-04T07:59:22.8973992Z - Title: Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)
2026-06-04T07:59:22.8975745Z - Required stages: impl, unit
2026-06-04T07:59:22.8976174Z 
2026-06-04T07:59:22.8976484Z ### REQ-HAZARD-PAIR-RATE-LIMIT
2026-06-04T07:59:22.8978970Z - Title: Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)
2026-06-04T07:59:22.8981631Z - Required stages: impl, unit
2026-06-04T07:59:22.8982054Z 
2026-06-04T07:59:22.8982366Z ### REQ-HAZARD-WAN-ORIGIN-AUTH
2026-06-04T07:59:22.8984625Z - Title: WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)
2026-06-04T07:59:22.8986978Z - Required stages: doc, impl, unit
2026-06-04T07:59:22.8987436Z 
2026-06-04T07:59:22.8987723Z ## How to report back
2026-06-04T07:59:22.8988105Z 
2026-06-04T07:59:22.8988552Z For every (requirement, failing criterion) pair, emit one finding:
2026-06-04T07:59:22.8989234Z 
2026-06-04T07:59:22.8989674Z     {
2026-06-04T07:59:22.8990319Z       "code": "requirement_quality",
2026-06-04T07:59:22.8991089Z       "requirementId": "REQ-...",
2026-06-04T07:59:22.8991984Z       "criterion": "singular" | "verifiable" | "atomic" | "active-voice",
2026-06-04T07:59:22.8992937Z       "message": "<short reason>",
2026-06-04T07:59:22.8993920Z       "suggestedRevision": "<optional rewrite>"
2026-06-04T07:59:22.8994686Z     }
2026-06-04T07:59:22.8995007Z 
2026-06-04T07:59:22.8995501Z Wrap your response as { "findings": [ ... ] } listing only your concerns; the
2026-06-04T07:59:22.8996544Z deterministic findings above don't need to be repeated.
